<?php
namespace app\data_magic\extension;

/**
 * 字符串参数转换
 * 用来将数据库中的不同格式的配置字符串转换成配置
 */
class StringParams
{
    /**
     * 格式是以`,`分隔的一组子字符串
     * 返回一个非关联数组
     * @param string $string 配置字符串
     */
    static public function glue($string){
        return explode(",",$string);
    }

    /**
     * 格式是以`,`分隔的一组子字符串
     * 返回一个关联数组
     * @param array $keys 关联数组的键名
     * @param string $string 配置字符串
     */
    static public function assoc($keys,$string)
    {
        $return=[];
        $values=explode(",",$string);
        foreach($keys as $index => $key){
            $return[$key] = isset($values[$index]) ? $values[$index] : null ;
        }
        return $return;
    }

    /**
     * 格式是以`|`,`,`分隔的字符串
     * 返回要调用的方法和参数
     */
    static public function func($string)
    {

    }

    /**
     * 格式是以`,`,`;`分隔的一组字符串
     * 返回一个关联数组作为选项,例如:
     * 字符串:0,未处理;1,已通过;2,已拒绝
     * 选项列表:["0"=>"未处理","1"=>"已通过","2"=>"已拒绝"]
     * @param string $string 配置字符串
     */
    static public function option($string)
    {
        $list=explode(";",$string);
        $options=[];
        foreach($list as $item){
            $name_title=explode(",",$item);
            if(count($name_title)===2){
                $options[$name_title[0]]=$name_title[1];
            }
        }
        return $options;
    }

    /**
     * 格式是以`:`,`;`分隔的一组字符串
     * 返回一个关联数组作为字段设置
     * @param string $string 配置字符串
     */
    static public function fields($string)
    {
        $list=explode(";",$string);
        $fields=[];
        foreach($list as $item){
            $key_value=explode(":",$item);
            if(count($key_value)===2){
                list($key,$value)=$key_value;
                $fields[$key]=$value;
            }
        }
        return $fields;
    }

    /**
     * 格式是json字符串
     * @param string $string 配置字符串
     */
    static public function json()
    {

    }
}
